package com.sxj.corejava.code05_方法;

/**
 * @author 石小俊
 * @date 2024年03月09日 10:04
 */
public class Test02_练习 {

    public static void main(String[] args) {
        int oddSum = sum(99);
        int evenSum = sum(100);
        System.out.println("1-99之间奇数之和:" + oddSum);
        System.out.println("1-100之间偶数之和:" + evenSum);

        int sum = sum2(3, 5, 20);
        System.out.println("1-100之间能被3和5整除的数字之和:" + sum);

        System.out.println("3的3次方:" + pow(3, 3));
        System.out.println("2的-2次方:" + pow(2, -2));
        System.out.println("2的0次方:" + pow(2, 0));
    }

    /**
     * 1.根据传递的参数值进行判断,如果n是一个奇数,则求n以内的奇数之和,如果n是一个偶数,则求n以内的偶数之和
     * @param n
     * @return
     */
    public static int sum(int n) {
        // 接收奇数之和与偶数之和的变量
        int oddSum = 0, evenSum = 0;
        for (int i = 1; i <= n; i++) {
            if (i % 2 != 0) {
                // 如果是奇数
                oddSum += i;
            } else {
                // 如果是偶数
                evenSum += i;
            }
        }
        if (n % 2 != 0) {
            // 如果n是一个奇数,则返回奇数之和
            return oddSum;
        } else {
            // 如果n是一个偶数,则返回偶数之和
            return evenSum;
        }
    }

    /**
     * 2.求1‐n之内能被num1和num2整除的数字之和
     * @param num1
     * @param num2
     * @param n
     */
    public static int sum2(int num1, int num2, int n) {
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            if (i % num1 == 0 && i % num2 == 0) {
                sum += i;
            }
        }
        return sum;
    }

    /**
     * 3.计算x的y次方,定义方法实现,不允许使用Math提供的方法
     * @param x
     * @param y
     * @return
     */
    public static double pow(int x, int y) {
        // 定义一个变量,用于接收结果
        double result = x;
        // 此时需要考虑y是正数还是负数
        if (y > 0) {
            for (int i = 2; i <= y; i++) {
                // y的值表示要乘以几次x
                result = result * x;
            }
        } else if (y == 0) {
            result = 1;
        } else {
            for (int i = 2; i <= -y; i++) {
                // y的值表示要乘以几次x
                result = result * x;
            }
            result = 1 / result;
        }
        return result;
    }
}
